package com.gjy.sentinel.core.demo;

import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;

/**
 * 普通限流
 *
 * @author gjy
 * @version 1.0
 * @since 2025-10-15 15:42:33
 */
public class FlowDemo {

    private static final String RESOURCE = "HelloService";

    /**
     * 调用一次限流入口，返回 true 表示通过，false 表示被阻塞
     */
    public static boolean tryAccess() {
        Entry entry = null;
        try {
            entry = SphU.entry(RESOURCE);
            // 业务代码可以放在这里
            System.out.println("[FlowDemo] 通过限流检查");
            return true;
        } catch (BlockException be) {
            // 被限流（默认是 FlowException）
            System.out.println("[FlowDemo] 被限流 => " + be.getClass().getSimpleName());
            return false;
        } finally {
            if (entry != null) {
                entry.exit();
            }
        }
    }

}
